{\rtf1\ansi\ansicpg936\cocoartf1038\cocoasubrtf250
{\fonttbl\f0\fnil\fcharset134 STHeiti;\f1\fnil\fcharset134 STXihei;\f2\fmodern\fcharset0 Courier;
\f3\fnil\fcharset134 STHeitiSC-Light;}
{\colortbl;\red255\green255\blue255;}
\paperw11900\paperh16840\margl1440\margr1440\vieww25100\viewh13360\viewkind0
\deftab720
\pard\pardeftab720\sa440\ql\qnatural

\f0\b\fs44 \cf0 \'ba\'af\'ca\'fd\'d4\'d9\'b3\'e9\'cf\'f3\
\pard\pardeftab720\ql\qnatural

\f1\b0\fs38 \cf0 2009-06-04 22:45:51\
\
\pard\pardeftab720\ql\qnatural

\f2\fs32 \cf0 Any problem in computer science can be solved with another level of indirection.\
                                    -- Butler Lampson, Turing Award Winner, 1994\
\

\f3 \'d6\'da\'cb\'f9\'d6\'dc\'d6\'aa\'a3\'ac
\f2 C/C++
\f3 \'d7\'ee\'c7\'bf\'b4\'f3\'b5\'c4\'d3\'ef\'d1\'d4\'cc\'d8\'d0\'d4\'a3\'ac\'be\'cd\'ca\'c7\'d6\'b8\'d5\'eb
\f2 (pointer)
\f3 \'a1\'a3
\f2  
\f3 \'b1\'be\'d6\'ca\'c9\'cf\'a3\'ac\'cb\'fc\'b4\'fa\'b1\'ed\'b7\'eb\'c5\'b5\'d2\'c0\'c2\'fc\'bc\'c6\'cb\'e3\'bb\'fa\'d6\'d0\'c6\'d5\'b1\'e9\'b4\'e6\'d4\'da\'b5\'c4\'d2\'bb\'d6\'d6\'c8\'a1\'d6\'b7\'b2\'d9\'d7\'f7\'a3\'ad\'a3\'ad\'bc\'e4\'bd\'d3\'c8\'a1\'d6\'b7\'a1\'a3
\f2  
\f3 \'d5\'fd\'ca\'c7\'d2\'f2\'ce\'aa
\f2 C
\f3 \'d3\'ef\'d1\'d4\'c8\'e7\'b4\'cb\'b3\'f6\'c9\'ab\'b5\'c4\'d6\'d2\'ca\'b5\'d3\'da\'b5\'b1\'ca\'b1\'b5\'c4\'bb\'fa\'c6\'f7
\f2 (sadly,
\f3 \'cd\'a8\'d3\'c3\'bc\'c6\'cb\'e3\'bb\'fa\'b5\'c4\'bd\'e1\'b9\'b9\'d6\'c1\'bd\'f1\'c8\'d4\'c8\'bb\'c3\'bb\'d3\'d0\'b1\'e4\'bb\'af
\f2 )
\f3 \'a3\'ac\'b2\'c5\'c4\'dc\'b9\'bb\'d4\'da\'cf\'b5\'cd\'b3\'bf\'aa\'b7\'a2\'d6\'d0\'bb\'f1\'b5\'c3\'d6\'a7\'c5\'e4\'b5\'d8\'ce\'bb\'a1\'a3
\f2 \
\

\f3 \'cd\'b8\'b9\'fd\'d6\'b8\'d5\'eb\'a3\'ac\'bf\'c9\'d2\'d4\'c1\'ec\'c2\'d4\'b5\'bd\'bc\'e4\'bd\'d3
\f2 (indirection)
\f3 \'b5\'c4\'c7\'bf\'b4\'f3\'a1\'a3
\f2  
\f3 \'b5\'ab\'ca\'c7\'ca\'b5\'bc\'ca\'c9\'cf\'a3\'ac
\f2 pointer
\f3 \'ba\'cd
\f2 pointee
\f3 \'d4\'da\'ca\'fd\'be\'dd\'b2\'e3\'c3\'e6\'c9\'cf\'b5\'c4\'bc\'e4\'bd\'d3\'a3\'ac\'bd\'f6\'bd\'f6\'ca\'c7
\f2 C/C++
\f3 \'bc\'c6\'cb\'e3\'c4\'dc\'c1\'a6\'b5\'c4\'b1\'f9\'c9\'bd\'d2\'bb\'bd\'c7\'a1\'a3
\f2  
\f3 \'c0\'e0
\f2 C
\f3 \'d3\'ef\'d1\'d4\'d6\'a7\'b3\'d6
\f2 (
\f3 \'b0\'fc\'c0\'a8
\f2 java)
\f3 \'ba\'af\'ca\'fd\'d6\'b8\'d5\'eb
\f2 ,
\f3 \'bc\'c8\'c8\'bb\'d6\'b8\'d5\'eb\'bf\'c9\'d2\'d4\'d6\'b8\'cf\'f2\'ba\'af\'ca\'fd
\f2 , 
\f3 \'c4\'c7\'c3\'b4\'c0\'ed\'cb\'f9\'b5\'b1\'c8\'bb\'b5\'c4\'bf\'c9\'c4\'dc\'ca\'b5\'cf\'d6\'b3\'cc\'d0\'f2\'d0\'d0\'ce\'aa\'c9\'cf\'ca\'b5\'cf\'d6\'bc\'e4\'bd\'d3\'a1\'a3
\f2  \
\

\f3 \'cb\'e6\'d7\'c5\'c3\'e6\'cf\'f2\'b6\'d4\'cf\'f3
\f2 (OO)
\f3 \'b3\'cc\'d0\'f2\'bf\'aa\'b7\'a2\'b7\'bd\'b7\'a8\'b5\'c4\'c6\'d5\'bc\'b0\'a3\'ac\'b3\'cc\'d0\'f2\'d4\'b1\'b6\'d4\'b6\'e0\'cc\'ac
\f2 (polymorphism)
\f3 \'d4\'bd\'c0\'b4\'d4\'bd\'ca\'ec\'c1\'b7\'a1\'a3\'be\'ad\'b5\'e4\'b5\'d8\'a3\'ac\'b3\'cc\'d0\'f2\'d4\'b1\'bf\'c9\'d2\'d4\'cd\'a8\'b9\'fd\'bb\'f9\'c0\'e0
\f2 (
\f3 \'bb\'f2\'d5\'df\'b3\'c6\'ce\'aa\'b3\'ac\'c0\'e0
\f2 ) B
\f3 \'b5\'c4\'d6\'b8\'d5\'eb\'bb\'f2\'d5\'df\'d2\'fd\'d3\'c3\'c0\'b4
\f2 manipulate D
\f3 \'a1\'a3\'d4\'da\'d3\'ef\'b7\'a8\'ba\'cd\'d3\'ef\'d2\'e5\'c9\'cf\'a3\'ac
\f2 B
\f3 \'b6\'bc\'ca\'c7\'d7\'d3\'c0\'e0
\f2 D
\f3 \'b5\'c4\'b3\'e9\'cf\'f3\'a1\'a3
\f2  C++/Java
\f3 \'d5\'e2\'d6\'d6\'b3\'e9\'cf\'f3\'b5\'c4\'b1\'b3\'ba\'f3\'a3\'ac\'c6\'e4\'ca\'b5\'ca\'c7\'ba\'af\'ca\'fd\'d6\'b8\'d5\'eb\'d4\'da\'b0\'b5\'cf\'e4\'b2\'d9\'d7\'f7\'a3\'ac\'d2\'bb\'b0\'e3\'c0\'b4\'bd\'b2\'a3\'ac\'ca\'c7\'d4\'da\'b0\'b5\'cf\'e4\'d4\'ec\'d7\'f7
\f2 vtable
\f3 \'a1\'a3\'d5\'fd\'ca\'c7\'d2\'f2\'ce\'aa
\f2 C++/Java
\f3 \'d4\'da\'ca\'b5\'cf\'d6
\f2 polymorphism
\f3 \'b5\'c4\'ca\'b1\'ba\'f2\'b2\'a2\'c3\'bb\'d3\'d0\'cd\'f9
\f2 C
\f3 \'d3\'ef\'d1\'d4\'d6\'d0\'d2\'fd\'c8\'eb\'c8\'ce\'ba\'ce\'d0\'c2\'b5\'c4\'b3\'e9\'cf\'f3\'bb\'fa\'d6\'c6\'a3\'ac\'b6\'f8\'ca\'c7\'c8\'d4\'c8\'bb\'c0\'fb\'d3\'c3\'d6\'b8\'d5\'eb\'bc\'e4\'bd\'d3\'c0\'b4\'cd\'ea\'b3\'c9\'a3\'ac\'cb\'f9\'d2\'d4
\f2 C
\f3 \'d3\'ef\'d1\'d4\'cd\'ac\'d1\'f9\'bf\'c9\'d2\'d4\'cd\'ea\'c3\'c0\'b5\'c4\'ca\'b5\'cf\'d6\'b6\'e0\'cc\'ac\'a1\'a3
\f2  Linux kernel
\f3 \'ba\'cd
\f2 python
\f3 \'b5\'c4\'d4\'b4\'b4\'fa\'c2\'eb\'be\'cd\'bc\'e1\'b3\'d6\'d3\'c3
\f2 C
\f3 \'ca\'b5\'cf\'d6
\f2 OO
\f3 \'a1\'a3
\f2      \
\

\f3 \'b3\'cc\'d0\'f2\'d3\'ef\'d1\'d4\'d6\'d0\'b3\'e9\'cf\'f3
\f2 "
\f3 \'bc\'e4\'bd\'d3
\f2 "
\f3 \'b2\'bb\'ca\'c7
\f2 C/C++
\f3 \'b5\'c4\'d7\'a8\'c0\'fb\'a1\'a3\'c6\'e4\'ca\'b5\'d2\'b2\'b2\'bb\'bd\'f6\'bd\'f6\'d6\'bb\'d3\'d0\'d6\'b8\'d5\'eb\'d2\'bb\'d6\'d6\'b7\'bd\'b0\'b8\'a1\'a3
\f2 lisp
\f3 \'d6\'d0
\f2 symbol
\f3 \'ba\'cd
\f2 quote symbol
\f3 \'b5\'c4\'b9\'d8\'cf\'b5\'a3\'ac\'ca\'c7\'b8\'fc\'bc\'d3\'b3\'e9\'cf\'f3\'b5\'c4\'bc\'e4\'bd\'d3\'a1\'a3
\f2  C/C++
\f3 \'b5\'c4\'d6\'b8\'d5\'eb\'a3\'ac\'bd\'f6\'bd\'f6\'ca\'c7\'ce\'ef\'c0\'ed\'c9\'cf\'b5\'c4\'bc\'e4\'bd\'d3\'a1\'a3\'ce\'de\'c2\'db\'d6\'b8\'d5\'eb\'d6\'b8\'cf\'f2\'ba\'ce\'b4\'a6\'a3\'ac\'d7\'dc\'ca\'c7\'d6\'b8\'cf\'f2\'ca\'b5\'bc\'ca\'b4\'e6\'d4\'da\'b5\'c4\'d0\'e9\'c4\'e2\'c4\'da\'b4\'e6\'c4\'b3\'b4\'a6\'a1\'a3
\f2  
\f3 \'b5\'ab\'ca\'c7
\f2 lisp
\f3 \'d6\'d0
\f2 symbol
\f3 \'b5\'c4\'bc\'e4\'bd\'d3\'a3\'ac\'b3\'fd\'c1\'cb\'c9\'d9\'ca\'fd\'d5\'e6\'b5\'c4\'d3\'d0\'cb\'f9\'d6\'b8\'d6\'ae\'cd\'e2\'a3\'ac\'be\'f8\'b4\'f3\'b2\'bf\'b7\'d6\'b6\'bc\'ca\'c7\'d4\'cb\'d0\'d0\'ca\'b1\'b2\'c5\'b2\'fa\'c9\'fa\'b5\'c4\'a1\'a3\'d5\'e2\'d2\'b2\'d5\'fd\'ca\'c7\'ba\'af\'ca\'fd\'ca\'bd\'d3\'ef\'d1\'d4
\f2 (functional progamming language)powerness
\f3 \'cb\'f9\'d4\'da\'a1\'a3
\f2 \
\
C++
\f3 \'d4\'da\'c9\'e8\'bc\'c6\'ba\'cd\'d1\'dd\'bb\'af\'d6\'d0\'a3\'ac\'b2\'a2\'c3\'bb\'d3\'d0\'d6\'b9\'b2\'bd\'d3\'da
\f2 polymorphism
\f3 \'a3\'ac\'c1\'ed\'cd\'e2\'d2\'bb\'d6\'d6\'b3\'e9\'cf\'f3\'bb\'fa\'d6\'c6\'a3\'ad\'a3\'ad\'b2\'d9\'d7\'f7\'b7\'fb\'d6\'d8\'d4\'d8
\f2 (operator overload)
\f3 \'c8\'e7\'b9\'fb\'d6\'bb\'c4\'dc\'d6\'d8\'d4\'d8\'bc\'d3\'bc\'d3\'bc\'f5\'bc\'f5\'a3\'ac\'d2\'b2\'be\'cd\'d6\'bb\'c4\'dc\'cd\'a3\'c1\'f4\'d4\'da\'d3\'ef\'b7\'a8\'cc\'c7
\f2 (syntax suger)
\f3 \'b5\'c4\'bd\'d7\'b6\'ce\'a1\'a3
\f2 Java
\f3 \'d3\'d0\'c0\'ed\'d3\'c9\'b2\'bb\'bd\'d3\'ca\'dc\'d5\'e2\'d6\'d6\'d3\'ef\'d1\'d4\'cc\'d8\'d0\'d4\'a3\'ac\'cd\'bd\'d4\'f6\'b7\'b3\'c4\'d5\'b6\'f8\'d2\'d1\'a1\'a3\'b5\'ab\'ca\'c7\'c1\'bd\'c0\'e0\'b7\'fb\'ba\'c5\'c8\'b4\'bd\'a5\'bd\'a5\'d7\'df\'ba\'ec\'a3\'ac\'b4\'f3\'b7\'c5\'d2\'ec\'b2\'ca\'a1\'a3\'d2\'bb\'c0\'e0\'ca\'c7\'d6\'b8\'d5\'eb\'bd\'e2\'d2\'fd\'d3\'c3\'b7\'fb\'ba\'c5
\f2 "*
\f3 \'a3\'ac
\f2  ->"
\f3 \'a3\'ac
\f2 smart_pointer
\f3 \'cb\'e4\'c8\'bb\'d3\'c3\'b4\'a6\'b6\'e0\'b6\'e0\'a3\'ac\'b5\'ab\'d4\'da\'b1\'be\'ce\'c4\'d6\'d0\'be\'cd\'d4\'dd\'c7\'d2\'b2\'bb\'b1\'ed\'a1\'a3
\f2  \
\

\f3 \'bb\'a8\'bf\'aa\'c1\'bd\'b6\'e4\'a3\'ac\'b8\'f7\'b1\'ed\'d2\'d4\'d6\'a6\'a1\'a3\'ba\'af\'ca\'fd\'b5\'f7\'d3\'c3\'b7\'fb\'ba\'c5
\f2 ()
\f3 \'b5\'c4\'d6\'d8\'d4\'d8\'a3\'ac\'b4\'f8\'c0\'b4\'b5\'c4\'ba\'af\'ca\'fd\'d7\'d3
\f2 (Functor)
\f3 \'a3\'ac\'d2\'b2\'be\'cd\'ca\'c7\'bf\'c9\'d2\'d4
\f2 "
\f3 \'c3\'b0\'b3\'e4
\f2 "
\f3 \'ba\'af\'ca\'fd\'b5\'c4\'b6\'d4\'cf\'f3\'a1\'a3\'d5\'e2\'b8\'f6\'bc\'f2\'b5\'a5\'b5\'c4\'b7\'fb\'ba\'c5\'a3\'ac\'be\'df\'b1\'b8\'cd\'ea\'c8\'ab\'b3\'e9\'cf\'f3\'bc\'c6\'cb\'e3\'b5\'c4\'c4\'dc\'c1\'a6\'a1\'a3\'d4\'ad\'d2\'f2\'d4\'da\'d3\'da\'a3\'ac\'bc\'c6\'cb\'e3
\f2 (computation)
\f3 \'d4\'da\'cd\'a8\'d3\'c3\'bc\'c6\'cb\'e3\'bb\'fa\'c9\'cf\'a3\'ac\'ca\'b5\'bc\'ca\'b1\'ed\'cf\'d6\'ce\'aa\'ca\'fd\'be\'dd\'ba\'cd\'b2\'d9\'d7\'f7\'b5\'c4\'bd\'e1\'ba\'cf\'a3\'ac\'b8\'fc\'b3\'e9\'cf\'f3\'b5\'c4\'cb\'b5\'a3\'ac\'bb\'b7\'be\'b3
\f2 (environment)
\f3 \'ba\'cd\'d6\'b8\'c1\'ee\'d0\'f2\'c1\'d0
\f2 (instruction sequence)
\f3 \'b5\'c4\'bd\'e1\'ba\'cf\'a1\'a3\'d2\'f2\'ce\'aa
\f2 Functor
\f3 \'ca\'c7\'b6\'d4\'cf\'f3\'a3\'ac\'d7\'d4\'c8\'bb\'bf\'c9\'d2\'d4\'d3\'d0\'b3\'c9\'d4\'b1\'ca\'fd\'be\'dd\'a3\'ac
\f2 C++
\f3 \'ca\'f5\'d3\'ef\'b3\'c6\'ce\'aa
\f2 stateful functor
\f3 \'a1\'a3
\f2  A stateful functor
\f3 \'d7\'d4\'c8\'bb\'d2\'b2\'bf\'c9\'d2\'d4\'b4\'e6\'b4\'a2\'ba\'af\'ca\'fd\'ca\'b5\'b2\'ce\'a1\'a3\'d3\'c3\'ca\'b5\'b2\'ce\'cc\'e6\'bb\'bb\'d0\'ce\'b2\'ce\'a3\'ac\'d5\'e2\'d6\'d6\'d0\'d0\'ce\'aa\'ca\'c7\'ba\'af\'ca\'fd\'b5\'f7\'d3\'c3\'ca\'b1\'b5\'c4\'bb\'b7\'be\'b3\'b0\'f3\'b6\'a8
\f2 (Bind)
\f3 \'a3\'ac\'c6\'e4\'b4\'e6\'d4\'da\'d3\'da\'c8\'ce\'ba\'ce\'d2\'bb\'b8\'f6\'b8\'df\'bc\'b6\'b3\'cc\'d0\'f2\'d3\'ef\'d1\'d4\'d6\'d0\'a1\'a3\'b2\'bb\'cd\'ac\'b5\'c4\'ca\'c7\'a3\'ac\'b4\'ab\'cd\'b3\'d2\'e2\'d2\'e5\'c9\'cf\'b5\'c4\'be\'b2\'cc\'ac\'d3\'ef\'d1\'d4\'a3\'ac\'b6\'bc\'ca\'c7\'d4\'da\'b1\'e0\'d2\'eb\'b5\'c4\'ca\'b1\'ba\'f2\'cd\'ea\'b3\'c9\'d5\'e2\'d6\'d6\'b0\'f3\'b6\'a8\'b5\'c4\'a1\'a3
\f2 C++
\f3 \'d3\'ef\'d1\'d4\'bf\'c9\'d2\'d4\'d7\'f6\'b5\'bd\'d3\'c9\'b3\'cc\'d0\'f2\'d4\'b1\'c0\'b4\'b0\'f3\'b6\'a8\'bb\'b7\'be\'b3\'a1\'a3\'bc\'b4\'ca\'b9\'c8\'e7\'b4\'cb\'a3\'ac\'d5\'e2\'d2\'b2\'b2\'bb\'ca\'c7\'ca\'b2\'c3\'b4\'cd\'bb\'c6\'c6\'a3\'ac\'c7\'bf\'b4\'f3\'c8\'e7
\f2 C, 
\f3 \'d6\'bb\'d2\'aa\'d7\'e3\'b9\'bb
\f2 hacking, 
\f3 \'d2\'b2\'d2\'bb\'d1\'f9\'bf\'c9\'d2\'d4\'d7\'f6\'b5\'bd\'a1\'a3\'b5\'ab\'ca\'c7\'a3\'ac\'b5\'b1
\f2 Functor
\f3 \'d3\'f6\'b5\'bd\'c4\'a3\'b0\'e5\'bb\'fa\'d6\'c6
\f2 (template mechanism), bang! 
\f3 \'b3\'cc\'d0\'f2\'d4\'b1\'bf\'aa\'ca\'bc\'bf\'d8\'d6\'c6\'b4\'fa\'c2\'eb\'c9\'fa\'b3\'c9
\f2 (code generation)
\f3 \'a1\'a3
\f2 \
\

\f3 \'c8\'e7\'b9\'fb\'d5\'e6\'b5\'c4\'d3\'d0\'c8\'cb\'c4\'dc\'b9\'bb\'b6\'c1\'b5\'bd\'d5\'e2\'c0\'ef\'a3\'ac\'ce\'d2\'d2\'aa\'b1\'a7\'c7\'b8\'a1\'a3
\f2  
\f3 \'d2\'f2\'ce\'aa\'c9\'cf\'ce\'c4\'cb\'f9\'bd\'b2\'a3\'ac\'b6\'bc\'ca\'c7
\f2 cliche. 
\f3 \'bc\'c8\'c8\'bb\'cc\'e2\'c4\'bf\'bd\'d0
\f2 "
\f3 \'ba\'af\'ca\'fd\'d4\'d9\'b3\'e9\'cf\'f3
\f2 "
\f3 \'a3\'ac\'d7\'d4\'c8\'bb\'ce\'d2\'ca\'c7\'cf\'eb\'d2\'aa\'b3\'ac\'d4\'bd
\f2 functor
\f3 \'c1\'cb\'a1\'a3
\f2  C/C++
\f3 \'d6\'d0\'b5\'c4\'ba\'af\'ca\'fd\'c0\'e0\'d0\'cd\'a3\'ac\'d6\'bb\'d6\'a7\'b3\'d6\'c1\'bd\'d6\'d6\'b2\'d9\'d7\'f7\'a3\'ba
\f2 1. 
\f3 \'ba\'af\'ca\'fd\'b5\'f7\'d3\'c3
\f2  2. 
\f3 \'c8\'a1\'b5\'d8\'d6\'b7\'a3\'ac\'d2\'b2\'be\'cd\'ca\'c7\'ba\'af\'ca\'fd\'d6\'b8\'d5\'eb\'a1\'a3\'c9\'cf\'ce\'c4\'b3\'b6\'c1\'cb\'c4\'c7\'c3\'b4\'b6\'e0\'b5\'c4\'a3\'ac\'bc\'b8\'ba\'f5\'b6\'bc\'b5\'c3\'d2\'e6\'d3\'da\'d5\'e2\'b8\'f6
\f2 "
\f3 \'c8\'a1\'b5\'d8\'d6\'b7
\f2 "
\f3 \'a1\'a3
\f2 C++
\f3 \'d3\'ef\'d1\'d4\'d6\'a7\'b3\'d6\'c4\'a3\'b0\'e5\'ba\'af\'ca\'fd
\f2 (template function)
\f3 \'a3\'ac\'b5\'ab\'ca\'c7\'b3\'cc\'d0\'f2\'d4\'b1\'bb\'e1\'be\'aa\'c6\'e6\'b5\'d8\'b7\'a2\'cf\'d6\'a3\'ac\'d4\'ad\'c0\'b4\'c4\'a3\'b0\'e5\'ba\'af\'ca\'fd\'b2\'bb\'d4\'d9\'c4\'dc\'b9\'bb\'c8\'a1\'b5\'d8\'d6\'b7\'c1\'cb
\f2 , 
\f3 \'c9\'f5\'d6\'c1\'bf\'c9\'d2\'d4\'cb\'b5
\f2 , 
\f3 \'b3\'fd\'c1\'cb\'ca\'b5\'c0\'fd\'bb\'af\'c8\'bb\'ba\'f3\'b5\'f7\'d3\'c3
\f2 , 
\f3 \'b6\'d4\'c4\'a3\'b0\'e5\'ba\'af\'ca\'fd\'d4\'d9\'d2\'b2\'c3\'bb\'d3\'d0\'b5\'da\'b6\'fe\'b2\'d9\'d7\'f7\'c1\'cb\'a1\'a3\'b6\'d4\'d3\'da\'d2\'bb\'b8\'f6\'ca\'ec\'c1\'b7\'b5\'c4
\f2 C
\f3 \'b3\'cc\'d0\'f2\'d4\'b1\'c0\'b4\'cb\'b5\'a3\'ac\'ca\'a7\'c8\'a5\'c1\'cb\'b2\'d9\'d7\'dd\'ba\'af\'ca\'fd\'d6\'b8\'d5\'eb\'a3\'ac\'be\'cd\'ca\'a7\'c8\'a5\'c1\'cb\'d2\'bb\'b0\'eb\'b5\'c4\'b1\'e0\'b3\'cc\'c0\'d6\'c8\'a4\'a1\'a3
\f2 \
\

\f3 \'ca\'b5\'bc\'ca\'c9\'cf\'a3\'ac\'ca\'d4\'cd\'bc\'c8\'a1\'c4\'a3\'b0\'e5\'ba\'af\'ca\'fd\'d6\'b8\'d5\'eb\'a3\'ac\'ca\'c7\'d2\'bb\'b8\'f6
\f2 Rookie
\f3 \'b4\'ed\'ce\'f3\'a1\'a3
\f2  
\f3 \'c4\'a3\'b0\'e5\'ca\'c7\'bd\'f6\'bd\'f6\'b4\'e6\'d4\'da\'d3\'da\'b1\'e0\'d2\'eb\'c6\'da\'a3\'ac\'b6\'f8\'bb\'f1\'b5\'c3\'ba\'cd\'b2\'d9\'d7\'dd\'a3\'ac\'ba\'af\'ca\'fd\'d6\'b8\'d5\'eb\'ca\'c7\'d4\'cb\'d0\'d0\'ca\'b1\'b5\'c4\'ca\'c2\'c7\'e9\'a3\'ac
\f2 apple & orange! 
\f3 \'c7\'da\'b7\'dc\'b5\'c4\'b3\'cc\'d0\'f2\'d4\'b1\'bf\'c9\'c4\'dc\'bb\'e1\'b7\'a2\'cf\'d6\'ca\'b5\'bc\'ca\'c9\'cf\'cb\'fc\'bf\'c9\'d2\'d4\'b5\'c3\'b5\'bd\'ca\'b5\'c0\'fd\'bb\'af\'ba\'f3\'b5\'c4
\f2 "
\f3 \'c4\'a3\'b0\'e5
\f2 "
\f3 \'ba\'af\'ca\'fd\'d6\'b8\'d5\'eb\'a1\'a3
\f2  
\f3 \'d5\'e2\'b8\'f6\'d7\'dc\'ca\'c7\'b2\'bb\'b9\'bb
\f2 "
\f3 \'b7\'b6
\f2 "
\f3 \'b5\'c4
\f2 . 
\f3 \'c4\'c7\'c3\'b4\'c8\'e7\'ba\'ce\'d4\'da\'b1\'e0\'d2\'eb\'c6\'da\'b2\'d9\'d7\'dd\'c4\'a3\'b0\'e5\'ba\'af\'ca\'fd\'c4\'d8
\f2 ? \
\

\f3 \'bc\'d9\'c9\'e8\'ce\'d2\'c3\'c7\'d3\'d0\'d2\'bb\'b8\'f6\'ba\'af\'ca\'fd\'c4\'a3\'b0\'e5
\f2 \
template <int i, class T> \
void \
temp_func(T arg)\
\{\
//...\
\}\
\

\f3 \'b3\'fd\'c1\'cb\'ca\'b5\'c0\'fd\'bb\'af\'c8\'bb\'ba\'f3\'b5\'f7\'d3\'c3
\f2 , 
\f3 \'ce\'d2\'c3\'c7\'bb\'b9\'c4\'dc\'b8\'c9\'b5\'e3\'ca\'b2\'c3\'b4\'c4\'d8
\f2 ?\
\

\f3 \'c4\'a3\'b0\'e5\'ca\'b5\'b2\'ce
\f2 (template argument)
\f3 \'c8\'e7\'ba\'ce
\f2 ? 
\f3 \'c4\'dc\'b2\'bb\'c4\'dc\'b0\'d1\'c4\'a3\'b0\'e5\'ba\'af\'ca\'fd\'b5\'b1\'d7\'f7\'c4\'a3\'b0\'e5\'ca\'b5\'b2\'ce\'d3\'c3\'c4\'d8
\f2 ?\
\
C++
\f3 \'b1\'ea\'d7\'bc\'d6\'d0
\f2 ,
\f3 \'c4\'a3\'b0\'e5\'ca\'b5\'b2\'ce\'d3\'d0\'c8\'fd\'d6\'d6\'c0\'e0\'d0\'cd
\f2 ,
\f3 \'ce\'d2\'c3\'c7\'d2\'c0\'b4\'ce\'bf\'b4\'d2\'bb\'cf\'c2
\f2 :\
1.template type argument      // no, it is not a type\
2.template non-type argument  \
// neither, it is not a concret function before instantiation\
3.template template argument\
a template argument for a template template-argument should be the name of a class template or a template alias, expressed as id-expression.\

\f3 \'bb\'b9\'ca\'c7\'b2\'bb\'d0\'d0
\f2 ,
\f3 \'d2\'aa\'c7\'f3\'ca\'c7\'c0\'e0\'c4\'a3\'b0\'e5
\f2 .\
\

\f3 \'bb\'b9\'ca\'c7\'c4\'c7\'b8\'f6\'cb\'bc\'cf\'eb
\f2 , 
\f3 \'bc\'e4\'bd\'d3
\f2 , 
\f3 \'ce\'d2\'c3\'c7\'bf\'c9\'d2\'d4\'b3\'a2\'ca\'d4\'d0\'b4\'d2\'bb\'b8\'f6\'c0\'e0\'c4\'a3\'b0\'e5
\f2 ,
\f3 \'b0\'fc\'d7\'b0\'d5\'e2\'b8\'f6\'ba\'af\'ca\'fd
\f2 ,\
template<int i, class T>\
struct temp_func_wrapper\{\
  static void doit(T arg) \
  \{\
    return tmp_func<i>(arg);\
  \}\
\};\
\

\f3 \'b5\'b1\'c8\'bb\'a3\'ac\'c4\'e3\'d2\'aa\'d7\'d4\'bc\'ba\'d5\'d5\'c1\'cf
\f2 T
\f3 \'ca\'c7\'b2\'bb\'ca\'c7
\f2 copyable
\f3 \'b5\'c4\'a1\'a3\'d4\'da\'b4\'cb\'be\'cd\'b2\'bb\'d5\'b9\'bf\'aa\'bc\'bc\'ca\'f5\'cf\'b8\'bd\'da\'c1\'cb\'a1\'a3
\f2 \
\

\f3 \'bc\'d9\'c9\'e8
\f2 temp_func
\f3 \'d6\'a7\'b3\'d6\'ba\'dc\'b6\'e0\'c0\'e0\'d0\'cd\'a3\'ac\'c4\'c7\'c3\'b4\'cd\'a8\'b9\'fd\'d3\'c3\'c0\'e0
\f2 temp_func_wrapper
\f3 \'b5\'c4\'b7\'e2\'d7\'b0\'a3\'ac\'be\'cd\'bf\'c9\'d2\'d4\'ca\'b5\'cf\'d6\'d4\'da\'b1\'e0\'d2\'eb\'c6\'da\'b2\'d9\'d7\'dd\'c4\'a3\'b0\'e5\'a1\'a3
\f2 \
\
template < template <int, class> class F, class T, int i>\
void foo(T t)\
\{\
      return F<i, T>::doit(t);\
\}\
\

\f3 \'b5\'b1\'d0\'e8\'d2\'aa\'b5\'f7\'d3\'c3
\f2 foo
\f3 \'b5\'c4\'ca\'b1\'ba\'f2\'a3\'ac\'bf\'c9\'d2\'d4\'bd\'ab
\f2 wraper
\f3 \'d7\'f7\'ce\'aa\'c4\'a3\'b0\'e5\'c4\'a3\'b0\'e5\'b2\'ce\'ca\'fd\'b4\'ab\'c8\'eb\'a1\'a3
\f2  
\f3 \'c9\'f5\'d6\'c1\'b8\'fc
\f2 \'93
\f3 \'b7\'b6
\f2 \'94
\f3 \'a3\'ac
\f2 foo
\f3 \'bf\'c9\'d2\'d4\'bd\'d3\'ca\'dc\'b2\'bb\'cd\'ac\'b5\'c4\'c4\'a3\'b0\'e5\'ba\'af\'ca\'fd\'d7\'f7\'ce\'aa\'b2\'ce\'ca\'fd\'a3\'ac\'d6\'bb\'d2\'aa\'cb\'fb\'c3\'c7\'b9\'b2\'cf\'ed\'cd\'ac\'d1\'f9\'b5\'c4\'c4\'a3\'b0\'e5\'d0\'ce\'b2\'ce\'bc\'b4\'bf\'c9\'a1\'a3
\f2  wrap
\f3 \'ba\'cd\'d6\'b8\'d5\'eb\'b5\'c4\'b9\'a6\'c4\'dc\'d2\'bb\'d6\'c2\'a3\'ac\'c6\'e4\'d6\'bb\'cc\'e1\'b9\'a9\'c1\'cb\'d2\'bb\'b8\'f6\'b2\'d9\'d7\'f7
\f2  -- 
\f3 \'bd\'e2\'d2\'fd\'d3\'c3\'a3\'ac\'d5\'fd\'ca\'c7\'d5\'e2\'d2\'bb\'b2\'bd\'cd\'ea\'b3\'c9\'c1\'cb\'bc\'e4\'bd\'d3\'a1\'a3\'d5\'fd\'c8\'e7\'d6\'b8\'d5\'eb\'b4\'f8\'c0\'b4\'b6\'ee\'cd\'e2\'b5\'c4\'bf\'aa\'cf\'fa\'d2\'bb\'d1\'f9\'a3\'ac\'ce\'d2\'c3\'c7\'d5\'e2\'c0\'ef\'d0\'e8\'d2\'aa\'d2\'bb\'b8\'f6\'be\'b2\'cc\'ac\'ba\'af\'ca\'fd\'c8\'eb\'bf\'da\'b5\'d8\'d6\'b7\'a3\'ac\'d0\'e8\'d2\'aa\'d4\'da\'b7\'fb\'ba\'c5\'b1\'ed\'c0\'ef\'d5\'bc\'d2\'bb\'b8\'f6\'c3\'fb\'d7\'d6\'a3\'ac\'d2\'bb\'b8\'f6\'d4\'cb\'d0\'d0\'ca\'b1\'b5\'c4\'ba\'af\'ca\'fd\'b5\'f7\'d3\'c3\'a1\'a3\'d5\'e2\'b8\'f6\'ca\'c7\'bc\'e4\'bd\'d3\'b5\'c4\'b4\'fa\'bc\'db\'a1\'a3\'d7\'f7\'ce\'aa\'c4\'a3\'b0\'e5\'c4\'a3\'b0\'e5\'b2\'ce\'ca\'fd\'a3\'ac
\f2  C++
\f3 \'b1\'e3\'bf\'c9\'d2\'d4\'d4\'da\'b1\'e0\'d2\'eb\'c6\'da\'b2\'d9\'d7\'f7\'c4\'a3\'b0\'e5\'ba\'af\'ca\'fd\'c1\'cb
\f2 . \
\

\f3 \'c8\'e7\'b9\'fb\'c4\'e3\'cf\'eb\'b3\'e9\'cf\'f3\'cb\'e3\'b7\'a8\'a3\'ac\'d5\'e2\'d2\'bb\'b2\'bd\'ca\'c7\'b1\'d8\'d0\'eb\'b5\'c4\'a1\'a3
\f2  
\f3 \'c0\'fd\'c8\'e7\'a3\'ac
\f2 iterator
\f3 \'ca\'c7
\f2 vector
\f3 \'b5\'c4\'c4\'da\'b2\'bf\'c0\'e0\'a3\'ac\'b6\'f8
\f2 vector
\f3 \'ca\'b5\'bc\'ca\'c9\'cf\'d3\'c3
\f2 boost::array
\f3 \'c0\'b4\'b1\'ed\'ca\'be\'a3\'a8\'ca\'fd\'d7\'e9\'ce\'ac\'b6\'c8\'ca\'c7\'c4\'a3\'b0\'e5\'b2\'ce\'ca\'fd\'a3\'a9\'a3\'ac
\f2  
\f3 \'c4\'c7\'c3\'b4\'b2\'bb\'cd\'ac\'ce\'ac\'b6\'c8\'b5\'c4
\f2 vector
\f3 \'a3\'ac\'cb\'fb\'c3\'c7\'b5\'c4
\f2 iterator
\f3 \'c0\'e0\'d0\'cd\'bd\'ab\'b2\'bb\'d4\'d9\'d2\'bb\'d6\'c2\'a3\'ac\'d2\'bb\'d7\'e9\'cb\'e3\'b7\'a8\'c8\'e7\'b9\'fb\'d3\'c3
\f2 iterator
\f3 \'c0\'b4\'ca\'b5\'cf\'d6\'a3\'ac\'c4\'c7\'c3\'b4\'cb\'fb\'c3\'c7\'b9\'b2\'cf\'ed\'d2\'bb\'cc\'d7\'c4\'a3\'b0\'e5\'d0\'ce\'b2\'ce\'a1\'a3
\f2 \
\

\f3 \'cf\'c2\'c3\'e6\'b6\'d4\'d3\'da\'ba\'af\'ca\'fd\'bc\'e4\'bd\'d3\'d4\'da\'b1\'e0\'d2\'eb\'c6\'da\'ba\'cd\'d4\'cb\'d0\'d0\'ca\'b1\'c1\'bd\'d6\'d6\'d0\'ce\'ca\'bd\'b5\'c4\'b6\'d4\'b1\'c8\'a3\'ba
\f2 \
\
Name                   Type                    Indirect form\
-----------------------------------------------------------------------\
temp_func             
\f3 \'c4\'a3\'b0\'e5\'ba\'af\'ca\'fd
\f2               
\f3 \'ba\'af\'ca\'fd
\f2 wrapper \
temp_func<1,int>      
\f3 \'ba\'af\'ca\'fd
\f2                  
\f3 \'ba\'af\'ca\'fd\'d6\'b8\'d5\'eb\
\
2009\'c4\'ea11\'d4\'c220\'c8\'d5 \'d7\'ee\'ba\'f3\'d2\'bb\'b4\'ce\'d0\'de\'b8\'c4}